package net.danielpaz.pucc.poo.trabalho.view;

import javax.swing.*;

import net.danielpaz.pucc.poo.trabalho.model.*;

import java.awt.event.*;
import java.awt.*;

class GuiManterAlbum extends JFrame {

	JLabel label1, label2, label3, label4, label5, label6;
	JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar,
			btSair;
	static JTextField tfID, tfNome, tfIdCantor, tfIdMidia, tfPreco, tfQuantidade;
	private AlbumDAO albumDAO;
	Album album = new Album();

	// private AtendenteDAO atendenteDAO;

	public static void main(String args[]) {
		JFrame janela = new GuiManterAlbum();
		janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.setVisible(true);
	}

	public GuiManterAlbum() {
		inicializarComponentes();
		definirEventos();
	}

	public void inicializarComponentes() {
		getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
		setTitle("Cadastro de Atendentes");
		setBounds(200, 100, 610, 120);
		label1 = new JLabel("ID ");
		label2 = new JLabel("Nome");
		label3 = new JLabel("ID Cantor");
		label4 = new JLabel("ID Midia");
		label5 = new JLabel("Preco");
		label6 = new JLabel("Quantidade");
		tfID = new JTextField(4);
		tfNome = new JTextField(30);
		tfIdCantor = new JTextField(8);
		tfIdMidia = new JTextField(8);
		tfPreco = new JTextField(10);
		tfQuantidade = new JTextField(8);


		btGravar = new JButton(null, null);
		btGravar.setText("Gravar");
		btGravar.setToolTipText("Gravar");
		btAlterar = new JButton(null, null);
		btAlterar.setText("Alterar");
		btAlterar.setToolTipText("Alterar");
		btExcluir = new JButton(null, null);
		btExcluir.setText("Excluir");
		btExcluir.setToolTipText("Excluir");
		btLocalizar = new JButton(null, null);
		btLocalizar.setText("Localizar");
		btLocalizar.setToolTipText("Localizar");
		btNovo = new JButton(null, null);
		btNovo.setText("Novo");
		btNovo.setToolTipText("Novo");
		btCancelar = new JButton(null, null);
		btCancelar.setText("Cancelar");
		btCancelar.setToolTipText("Cancelar");
		btSair = new JButton(null, null);
		btSair.setText("Sair");
		btSair.setToolTipText("Sair");

		getContentPane().add(label1);
		getContentPane().add(tfID);
		getContentPane().add(label2);
		getContentPane().add(tfNome);
		getContentPane().add(label3);
		getContentPane().add(tfIdCantor);
		getContentPane().add(label4);
		getContentPane().add(tfIdMidia);
		getContentPane().add(label5);
		getContentPane().add(tfPreco);		
		getContentPane().add(label6);
		getContentPane().add(tfQuantidade);
		getContentPane().add(btNovo);
		getContentPane().add(btLocalizar);
		getContentPane().add(btGravar);
		getContentPane().add(btAlterar);
		getContentPane().add(btExcluir);
		getContentPane().add(btCancelar);
		getContentPane().add(btSair);
		setBotoes(true, true, false, false, false, false);
		albumDAO = new AlbumDAO();
		if (!albumDAO.bd.getConnection()) {
			JOptionPane.showMessageDialog(null,
					"Falha na conexao, o sistema sera fechado!");
			System.exit(0);
		}
	}

	public void definirEventos() {

		btSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				albumDAO.bd.close();
				System.exit(0);
			}
		});
		btNovo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpaCampos();
				setBotoes(false, false, true, false, false, true);
			}
		});
		btCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpaCampos();
			}
		});
		btGravar.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				if (tfID.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O id nao pode ser vazio!");
					tfID.requestFocus();
					return;
				}
				if (tfNome.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O nome nao pode ser vazio!");
					tfNome.requestFocus();
					return;
				}
				if (tfIdCantor.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"A data de contratacao pode ser vazia!");
					tfIdCantor.requestFocus();
					return;
				}
				if (tfIdMidia.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O salario nao pode ser vazio!");
					tfIdMidia.requestFocus();
					return;
				}
				if (tfPreco.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O cargo pode ser vazio!");
					tfPreco.requestFocus();
					return;
				}
				if (tfQuantidade.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O cargo pode ser vazio!");
					tfQuantidade.requestFocus();
					return;
				}

				album.setId(Integer.parseInt(tfID.getText()));
				album.setNome(tfNome.getText());
				album.setIdCantor(Integer.parseInt(tfIdCantor.getText()));
				album.setIdMidia(Integer.parseInt(tfIdMidia.getText()));
				album.setPreco(Double.parseDouble(tfPreco.getText()));
				album.setQuantidade(Integer.parseInt(tfQuantidade.getText()));
				
				

				JOptionPane.showMessageDialog(null,
						albumDAO.atualizar(AtendenteDAO.INCLUSAO, album));
				limpaCampos();
			}
		});
		btAlterar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				album.setId(Integer.parseInt(tfID.getText()));
				album.setNome(tfNome.getText());
				album.setIdCantor(Integer.parseInt(tfIdCantor.getText()));
				album.setIdMidia(Integer.parseInt(tfIdMidia.getText()));
				album.setPreco(Double.parseDouble(tfPreco.getText()));
				album.setQuantidade(Integer.parseInt(tfQuantidade.getText()));

				JOptionPane.showMessageDialog(null,
						albumDAO.atualizar(AtendenteDAO.ALTERACAO, album));

				limpaCampos();
			}
		});
		btExcluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				album.setId(Integer.parseInt(tfID.getText()));
				albumDAO.localizar(GerenteDAO.INCLUSAO, album);
				int n = JOptionPane.showConfirmDialog(null,
						album.getNome(), " Excluir o Gerente? ",
						JOptionPane.YES_NO_OPTION);
				if (n == JOptionPane.YES_OPTION) {
					JOptionPane.showMessageDialog(null, albumDAO.localizar(
							GerenteDAO.EXCLUSAO, album));
					limpaCampos();
				}
			}
		});
		btLocalizar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				atualizaCampos();
			}
		});
	}

	public void limpaCampos() {
		tfID.setText("");
		tfNome.setText("");
		tfIdCantor.setText("");
		tfIdMidia.setText("");
		tfPreco.setText("");
		tfQuantidade.setText("");

		setBotoes(true, true, false, false, false, false);
	}

	public void atualizaCampos() {
		album.setId(Integer.parseInt(tfID.getText()));
		if (albumDAO.localizar(GerenteDAO.ALTERACAO, album)) {
			tfID.setText(Integer.toString(album.getId()));
			tfNome.setText(album.getNome());
			tfIdCantor.setText(Integer.toString(album.getIdCantor()));
			tfIdMidia.setText(Integer.toString(album.getIdMidia()));
			tfPreco.setText(Double.toString(album.getPreco()));
			tfQuantidade.setText(Integer.toString(album.getQuantidade()));
			setBotoes(true, true, false, true, true, true);
		} else {
			JOptionPane.showMessageDialog(null, "Gerente nao encontrado!");
			limpaCampos();
		}
	}

	public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar,
			boolean bAlterar, boolean bExcluir, boolean bCancelar) {
		btNovo.setEnabled(bNovo);
		btLocalizar.setEnabled(bLocalizar);
		btGravar.setEnabled(bGravar);
		btAlterar.setEnabled(bAlterar);
		btExcluir.setEnabled(bExcluir);
		btCancelar.setEnabled(bCancelar);
	}
}
